1つ上の潜在成長曲線モデル

竹林 由武(統数研)

2016-3-27 @Hirosima.Univ

Topics

 

1. 非線形の成長曲線モデル

  • polynominal model
  • latetn basis model
  • piecewise models

 

2.多変量の成長曲線モデル

  • autoregressive latent trajectory Model
  • latent change score model

非線形モデルのモチベ

2次(以上)の曲線で

polynominal model

データドリブンに

latent basis model

ある時点から傾きが異なる

piecewise model

サンプルデータ

BMIの経時データ

Newsom, J. T. (2015). Longitudinal Structural Equation Modeling: A Comprehensive Introduction. Routledge.
http://www.longitudinalsem.com/health.dat

Rで潜在成長曲線モデル

lavaanでまじめに書く

level =~ 1* bmi1 +1* bmi2 +1* bmi3 +
         1* bmi4 +1* bmi5 +1* bmi6 
slope =~ 0 * bmi1 + 1 * bmi2 + 2 * bmi3 + 
         3 * bmi4 + 4 * bmi5 + 5 * bmi6 
bmi1 ~~(vare)* bmi1 
bmi2 ~~(vare)* bmi2 
bmi3 ~~(vare)* bmi3 
bmi4 ~~(vare)* bmi4 
bmi5 ~~(vare)* bmi5 
bmi6 ~~(vare)* bmi6 

結構めんどい…

救世主登場

RAMpathパッケージ

  • 潜在成長曲線系のlavaanコードを自動生成して実行してくれる関数が充実
    • 成長曲線モデル: ramLCM
    • 潜在差得点モデル:ramLCS
    • 2変量の潜在差得点モデル: ramBLCS
  • lavaanのモデルを吐き出せるので、RAMpathで実行した後lavaanで微調整という流れで効率よくモデリング

ramLCM

  • 切片のみのモデル (model=‘no’)

  • 線形モデル (model=‘linear’)

  • 二次曲線モデル (model=‘quadratic’)

  • latent basisモデル (model = ‘latent’)

一行で簡潔に推定

一気にどん

library(RAMpath)
fit.all<-ramLCM(data=data,outcome=1:6, model='all')

個別にどん

fit.no<-ramLCM(data=data,outcome=1:6, model='no')
fit.linear<-ramLCM(data=data,outcome=1:6, model='linear')
fit.quadratic<-ramLCM(data=data,outcome=1:6, model='quadratic')
fit.latent<-ramLCM(data=data,outcome=1:6, model='latent')

切片のみモデル

lavannコード

cat(fit.all$model$no)
## level =~ 1* X1 +1* X2 +1* X3 +1* X4 +1* X5 +1* X6 
##  X1 ~~(vare)* X1 
##  X2 ~~(vare)* X2 
##  X3 ~~(vare)* X3 
##  X4 ~~(vare)* X4 
##  X5 ~~(vare)* X5 
##  X6 ~~(vare)* X6

線形モデル

lavannコード

cat(fit.all$model$linear)
## level =~ 1* X1 +1* X2 +1* X3 +1* X4 +1* X5 +1* X6 
##  slope =~  0 * X1 + 1 * X2 + 2 * X3 + 3 * X4 + 4 * X5 + 5 * X6 
##  X1 ~~(vare)* X1 
##  X2 ~~(vare)* X2 
##  X3 ~~(vare)* X3 
##  X4 ~~(vare)* X4 
##  X5 ~~(vare)* X5 
##  X6 ~~(vare)* X6

二次曲線モデル

lavannコード

cat(fit.all$model$quadratic)
## level =~ 1* X1 +1* X2 +1* X3 +1* X4 +1* X5 +1* X6 
##  slope =~  0 * X1 + 1 * X2 + 2 * X3 + 3 * X4 + 4 * X5 + 5 * X6 
##  quadratic =~  0 * X1 + 1 * X2 + 4 * X3 + 9 * X4 + 16 * X5 + 25 * X6 
##  X1 ~~(vare)* X1 
##  X2 ~~(vare)* X2 
##  X3 ~~(vare)* X3 
##  X4 ~~(vare)* X4 
##  X5 ~~(vare)* X5 
##  X6 ~~(vare)* X6

latent basisモデル

lavannコード

cat(fit.all$model$latent)
## level =~ 1* X1 +1* X2 +1* X3 +1* X4 +1* X5 +1* X6 
##  slope =~  0 * X1 +start( 1 )* X2 +start( 2 )* X3 +start( 3 )* X4 +start( 4 )* X5 + 5 * X6 
##  X1 ~~(vare)* X1 
##  X2 ~~(vare)* X2 
##  X3 ~~(vare)* X3 
##  X4 ~~(vare)* X4 
##  X5 ~~(vare)* X5 
##  X6 ~~(vare)* X6

適合度

fits<-round(fit.all$fit[
            c("chisq","df","pvalue","cfi",
              "srmr","rmsea","aic","bic"),],digits=2)
datatable(fits,option=list(dom='t'))

おまけ (ポチッってデータ取得)

datatable(fits, extensions = 'Buttons', 
          options = list(dom = 'Bfrtip',
          buttons = c('copy', 'csv', 'excel', 'pdf', 'print')))

推定結果の出力

## % latex table generated in R 3.2.3 by xtable 1.8-2 package
## % Thu Mar 24 19:21:06 2016
## \begin{table}[ht]
## \centering
## \begin{tabular}{rllllrrrrrr}
##   \hline
##  & lhs & op & rhs & label & est & se & z & pvalue & ci.lower & ci.upper \\ 
##   \hline
## 1 & level & =\~{} & X1 &  & 1.00 & 0.00 &  &  & 1.00 & 1.00 \\ 
##   2 & level & =\~{} & X2 &  & 1.00 & 0.00 &  &  & 1.00 & 1.00 \\ 
##   3 & level & =\~{} & X3 &  & 1.00 & 0.00 &  &  & 1.00 & 1.00 \\ 
##   4 & level & =\~{} & X4 &  & 1.00 & 0.00 &  &  & 1.00 & 1.00 \\ 
##   5 & level & =\~{} & X5 &  & 1.00 & 0.00 &  &  & 1.00 & 1.00 \\ 
##   6 & level & =\~{} & X6 &  & 1.00 & 0.00 &  &  & 1.00 & 1.00 \\ 
##   7 & slope & =\~{} & X1 &  & 0.00 & 0.00 &  &  & 0.00 & 0.00 \\ 
##   8 & slope & =\~{} & X2 &  & 1.00 & 0.00 &  &  & 1.00 & 1.00 \\ 
##   9 & slope & =\~{} & X3 &  & 2.00 & 0.00 &  &  & 2.00 & 2.00 \\ 
##   10 & slope & =\~{} & X4 &  & 3.00 & 0.00 &  &  & 3.00 & 3.00 \\ 
##   11 & slope & =\~{} & X5 &  & 4.00 & 0.00 &  &  & 4.00 & 4.00 \\ 
##   12 & slope & =\~{} & X6 &  & 5.00 & 0.00 &  &  & 5.00 & 5.00 \\ 
##   13 & quadratic & =\~{} & X1 &  & 0.00 & 0.00 &  &  & 0.00 & 0.00 \\ 
##   14 & quadratic & =\~{} & X2 &  & 1.00 & 0.00 &  &  & 1.00 & 1.00 \\ 
##   15 & quadratic & =\~{} & X3 &  & 4.00 & 0.00 &  &  & 4.00 & 4.00 \\ 
##   16 & quadratic & =\~{} & X4 &  & 9.00 & 0.00 &  &  & 9.00 & 9.00 \\ 
##   17 & quadratic & =\~{} & X5 &  & 16.00 & 0.00 &  &  & 16.00 & 16.00 \\ 
##   18 & quadratic & =\~{} & X6 &  & 25.00 & 0.00 &  &  & 25.00 & 25.00 \\ 
##   19 & X1 & \~{}\~{} & X1 & vare & 0.30 & 0.01 & 34.64 & 0.00 & 0.28 & 0.32 \\ 
##   20 & X2 & \~{}\~{} & X2 & vare & 0.30 & 0.01 & 34.64 & 0.00 & 0.28 & 0.32 \\ 
##   21 & X3 & \~{}\~{} & X3 & vare & 0.30 & 0.01 & 34.64 & 0.00 & 0.28 & 0.32 \\ 
##   22 & X4 & \~{}\~{} & X4 & vare & 0.30 & 0.01 & 34.64 & 0.00 & 0.28 & 0.32 \\ 
##   23 & X5 & \~{}\~{} & X5 & vare & 0.30 & 0.01 & 34.64 & 0.00 & 0.28 & 0.32 \\ 
##   24 & X6 & \~{}\~{} & X6 & vare & 0.30 & 0.01 & 34.64 & 0.00 & 0.28 & 0.32 \\ 
##   25 & level & \~{}\~{} & level &  & 0.77 & 0.05 & 14.98 & 0.00 & 0.67 & 0.87 \\ 
##   26 & slope & \~{}\~{} & slope &  & 0.17 & 0.02 & 8.33 & 0.00 & 0.13 & 0.21 \\ 
##   27 & quadratic & \~{}\~{} & quadratic &  & 0.01 & 0.00 & 7.88 & 0.00 & 0.00 & 0.01 \\ 
##   28 & level & \~{}\~{} & slope &  & -0.10 & 0.02 & -4.16 & 0.00 & -0.15 & -0.05 \\ 
##   29 & level & \~{}\~{} & quadratic &  & 0.02 & 0.00 & 3.75 & 0.00 & 0.01 & 0.03 \\ 
##   30 & slope & \~{}\~{} & quadratic &  & -0.03 & 0.00 & -8.12 & 0.00 & -0.04 & -0.02 \\ 
##   31 & X1 & \~{}1 &  &  & 0.00 & 0.00 &  &  & 0.00 & 0.00 \\ 
##   32 & X2 & \~{}1 &  &  & 0.00 & 0.00 &  &  & 0.00 & 0.00 \\ 
##   33 & X3 & \~{}1 &  &  & 0.00 & 0.00 &  &  & 0.00 & 0.00 \\ 
##   34 & X4 & \~{}1 &  &  & 0.00 & 0.00 &  &  & 0.00 & 0.00 \\ 
##   35 & X5 & \~{}1 &  &  & 0.00 & 0.00 &  &  & 0.00 & 0.00 \\ 
##   36 & X6 & \~{}1 &  &  & 0.00 & 0.00 &  &  & 0.00 & 0.00 \\ 
##   37 & level & \~{}1 &  &  & 3.41 & 0.04 & 95.73 & 0.00 & 3.34 & 3.48 \\ 
##   38 & slope & \~{}1 &  &  & -0.08 & 0.02 & -3.42 & 0.00 & -0.12 & -0.03 \\ 
##   39 & quadratic & \~{}1 &  &  & 0.01 & 0.00 & 2.82 & 0.00 & 0.00 & 0.02 \\ 
##    \hline
## \end{tabular}
## \end{table}

推定平均値の遷移プロット